#include "data.h"
#include <algorithm>
#include <iostream>

Data::Data() {
	/* vide */
}

Data::Data(const Data& orig) {
	this->liste = orig.liste;
}

Data& Data::operator = (const Data& d) {
	if (this != &d) {
		liste.clear();
		for (list<int>::const_iterator it = d.liste.begin(); it != d.liste.end(); it++) {
			liste.push_back(*it);
		}
	}
	return *this;
}

void Data::ajouter(int k) {
	lock_guard<mutex> g(m);
	liste.push_back(k);
}

void Data::ajouter(const list<int>& liste) {
	lock_guard<mutex> g(m);
	for (list<int>::const_iterator it = liste.begin(); it != liste.end(); it++) {
		this->liste.push_back(*it);
	}
}

bool Data::trouve(int k) const {
	lock_guard<mutex> g(m);
	return find(liste.begin(), liste.end(), k) != liste.end();
}

void Data::afficher() const {
	lock_guard<mutex> g(m);
	cout << "[";
	for (list<int>::const_iterator it = liste.begin(); it != liste.end(); it++) {
		cout << " " << *it;
	}
	cout << " ]" << endl;
}

Data::~Data() {
	liste.clear();
}

